package com.dkm.dkmproject.action;

import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Date;

import com.lowagie.text.*;
import com.lowagie.text.pdf.*;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.rendering.PDFRenderer;
import org.junit.Test;

import javax.imageio.ImageIO;

/**
 * @PROJECT_NAME: dkmproject
 * @DESCRIPTION:
 * @USER: 周佳佳
 * @DATE: 2020/5/19 8:52
 */
public class Testtt {
    /**
     * 转换全部的pdf
     * @param fileAddress 文件地址
     * @param filename PDF文件名
     * @param type 图片类型
     */
    public static void pdf2png(String fileAddress,String filename,String type) {
        // 将pdf装图片 并且自定义图片得格式大小
        File file = new File(fileAddress+"\\"+filename+".pdf");
        try {
            PDDocument doc = PDDocument.load(file);
            PDFRenderer renderer = new PDFRenderer(doc);
            int pageCount = doc.getNumberOfPages();
            for (int i = 0; i < pageCount; i++) {
                BufferedImage image = renderer.renderImageWithDPI(i, 144); // Windows native DPI
                // BufferedImage srcImage = resize(image, 240, 240);//产生缩略图
                ImageIO.write(image, type, new File(fileAddress+"\\"+filename+"_"+(i+1)+"."+type));
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    @Test
    public void one(){
        pdf2png("D:\\UserData\\My Documents\\WeChat Files\\zhoujiajia1402407104\\FileStorage\\File\\2020-05",
                "明昊达翻书顺序",0,-1,"jpg");
    }
    /**
     *自由确定起始页和终止页
     * @param fileAddress 文件地址
     * @param filename pdf文件名
     * @param indexOfStart 开始页  开始转换的页码，从0开始
     * @param indexOfEnd 结束页  停止转换的页码，-1为全部
     * @param type 图片类型
     */
    public static void pdf2png(String fileAddress,String filename,int indexOfStart,int indexOfEnd,String type) {
        // 将pdf装图片 并且自定义图片得格式大小
        File file = new File(fileAddress+"\\"+filename+".pdf");
        try {
            PDDocument doc = PDDocument.load(file);
            PDFRenderer renderer = new PDFRenderer(doc);
            int pageCount = doc.getNumberOfPages();
            for (int i = indexOfStart; i < indexOfEnd; i++) {
                BufferedImage image = renderer.renderImageWithDPI(i, 144); // Windows native DPI
                // BufferedImage srcImage = resize(image, 240, 240);//产生缩略图
                ImageIO.write(image, type, new File(fileAddress+"\\"+filename+"_"+(i+1)+"."+type));
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    public static void main(String[] args) {
        try {
            OutputStream file = new FileOutputStream(new File("D:\\Test.pdf"));

            Document document = new Document();
            PdfWriter.getInstance(document, file);
            document.open();
            String str="附件1\n" +
                    "         小区水电设施设备明细表\n" +
                    "附件2\n" +
                    "        小区水、电设施设备巡查细则\n" +
                    "          小区配电设备包括箱式变压器、低压配电屏（箱）、高低压电缆电线及公共照明等配套设施，给排水设施包括给水管、阀、泵和排水管、沟、泵等设施。为满足       小区生活、工作需要，特制定以下水、电设施设备巡查细则。\n" +
                    "一、配电设备巡查细则\n" +
                    "1 、高压电缆认真检查下述内容：\n" +
                    "a、每周巡查一次电缆路径附近有无开挖或填筑工程正在施工；\n" +
                    "b、每周巡查一次电缆线路上有无堆置混凝土块、建筑材料、笨重物体、酸碱性物品；\n" +
                    "c、每月巡查一次外露的电缆外层、铠甲有无破损现象。\n" +
                    "2 、箱式变压器认真检查下述内容:\n" +
                    "a、每周巡查一次箱式变压器运行时声音是否正常；\n" +
                    "b、每周巡查一次外壳接地是否有脱焊及螺丝松动,外壳是否有明显破损及孔洞；\n" +
                    "c、每周巡查一次基础是否有开挖和明显破损。\n" +
                    "3 、低压配电柜（箱）认真检查下述内容:\n" +
                    "a、每周巡查一次仪表信号、开关位置状态的指示应对应,三相负荷、三相电压指示正确；\n" +
                    "b、每周巡查一次整个装置的各部位有无异常响动或异味、焦糊味；装置和电器的表面是否清洁完整；\n" +
                    "c、每周巡查一次易受外力震动和多尘场所，应检查电气设备的保护罩、灭弧罩有无松动、是否清洁；\n" +
                    "d、每月巡查一次断路器、接触器的电磁线圈吸合是否正常，有无过大噪音或线圈过热；\n" +
                    "e、每月巡查一次连接点和接地点的紧固情况及电器元件有无破损或功能欠缺等；\n" +
                    "f、每月巡查一次检查电容柜内的电容器外壳是否良好，有无渗漏、膨胀情况，指示灯是否良好；\n" +
                    "g、设备发生故障后，重点检查熔断器及保护装置的动作情况，以及事故范围内的设备有无烧伤或毁坏情况，有无其他异常情况等。\n" +
                    "4 、低压线路及照明认真检查下述内容:\n" +
                    "a、每周巡查一次电缆电线路径附近有无异常现象，有无开挖或填筑工程正在或即将施工，防止电缆被挖损；\n" +
                    "b、每周巡查一次电缆电线上是否有堆置物品；\n" +
                    "c、每周巡查一次检查电缆电线是否泡在水中，周围是否有损坏电缆电线的其它不安全因素存在；\n" +
                    "d、每月巡查一次电缆电线井是否畅通，防火措施是否到位；\n" +
                    "e、每月巡查一次电缆电线接头接触是否良好，有否有发热现象，靠近地面一段电缆是否保护良好；\n" +
                    "f、每月巡查一次电缆固定点是否完好，电缆电线外层、铠甲有无破损现象；\n" +
                    "g、每月巡查一次检查插座、开关是否完好；\n" +
                    "h、每月巡查一次检查照明灯具是否完好。\n" +
                    "二、给排水巡查细则\n" +
                    "1 、进水总表及水表井认真检查下述内容：\n" +
                    "a、每月巡查一次水表是否完好，无破损；\n" +
                    "b、每月巡查一次给水检查井内是否积水、杂物；\n" +
                    "c、每月巡查一次水表读数是否显示正常；\n" +
                    "d、每月巡查一次水表的闸阀是否灵活可用。\n" +
                    "2 、 给水泵和阀门（蝶阀、闸阀、冲洗栓、水龙头等）认真检查下述内容：\n" +
                    "a、每周巡查一次阀门、水龙头等有无漏水情况；\n" +
                    "b、每周巡查一次给水泵运行声响是否正常；\n" +
                    "c、每月巡查一次阀门开关是否灵活。\n" +
                    "3 、排水系统认真检查下述内容：\n" +
                    "a、每周巡查一次管路是否泄漏；\n" +
                    "b、每周巡查一次检查井井盖齐全、无污水及废水外溢；\n" +
                    "c、每月巡查一次阀门是否卡死、支架是否有松动；\n" +
                    "d、每月巡查一次浮球是否失效。\n" +
                    "4 、镀锌水管、钢塑管、薄壁不锈钢管认真检查下述内容：\n" +
                    "a、每周巡查一次管路是否泄漏，固定是否牢固；\n" +
                    "b、每月巡查一次伸缩节、橡胶软节是否有变形，伸缩节支架、水管支架紧固，区间柔性卡箍是否稳固；\n" +
                    "c、每月巡查一次管路是否腐蚀。\n" +
                    "5 、室外排水认真检查下述内容：\n" +
                    "a、每月巡查一次屋面地漏盖是否完好无损，能有效的阻挡杂物进入排水管道；\n" +
                    "b、每月巡查一次排水沟有无积淤；\n" +
                    "c、每月巡查一次屋面排水沟盖板是否完好；\n" +
                    "6 、室外雨水管道、雨水井、排水明/暗沟认真检查下述内容：\n" +
                    "a、每周巡查一次路面排（雨）水井盖有无松动现象；\n" +
                    "b、每周巡查一次室外排水明（暗）沟、排（雨）水井盖板有无缺少、损坏；\n" +
                    "c、每月巡查一次室外排水明（暗）沟、排（雨）水井积淤情况；\n" +
                    "d、每月巡查一次室外地埋排（雨）水管道两端排（雨）水井水位有无明显液位差；\n" +
                    "e、每月巡查一次室外立面排(雨)水管道安装是否牢固。\n" +
                    "\n" +
                    "\n" +
                    "  \n" +
                    "     小区“水电工•工作”专业化委托合同\n" +
                    "甲方：\n" +
                    "乙方 ：娄底市明昊达维修有限公司\n" +
                    "为了降低物业水、电工管理成本，规避用工风险和水电工人身安全风险，提高用电、用水设施运行维护水平，完善用电、用水基础资料，坚持特种作业人员持证上岗、作业安全教育和岗位技术培训，更高质量的履行工作职责，更好地满足小区（单位）客户的用电、用水需求，提升物业管理品质。              —       物业管理有限公司（以下简称甲方）和娄底市明昊达维修有限公司（以下简称乙方）通过充分协商，在诚实、信用、公平、友好的基础上，甲方将       小区的水、电工岗位工作职责委托乙方专业化公司负责履行。依照《中华人民共和国合同法》,达成如下合同条款：\n" +
                    "第一条  委托工作范围：\n" +
                    "1、用电设施：包括小区配电设备 。\n" +
                    "小区配电设备是指从       小区专变至小区内各用电设备设施电源接线桩止（其中电梯电源至电梯机房配电箱出线侧桩头），包括箱式变压器、低压配电屏（箱）、高低压电缆电线及公共照明等配套设施。\n" +
                    "2、用水设施：包括小区给排水设施。\n" +
                    "小区给水设施是指       小区供水总表至各入户分表之间的给水管、阀、泵。\n" +
                    "排水设施是指排水管、沟、泵等设施。\n" +
                    "水、电设施设备明细表见附件1。\n" +
                    "第二条  委托工作职责\n" +
                    "1、水、电设备设施巡视、检查（见附件2《       小区水、电设施设备巡查细则》）；\n" +
                    "2、小型缺陷（故障）处理。人工成本不超过500元的为小型缺陷（故障），人工成本超过500元的为大型缺陷（故障）；\n" +
                    "3、填写《水、电设备设施运行巡查日志》，填报《水、电设备设施缺陷（故障）报表》；\n" +
                    "4、乙方协助甲方完善相关工作的基础资料（电气主接线图、配电设备台账）；\n" +
                    "5、开展小区安全用电义务宣传。\n" +
                    "第三条  委托工作要求\n" +
                    "1、小区水、电设备设施抢修采取定点工作、流动工作和“抢修平台”三级工作体系相结合的联动工作机制。\n" +
                    "2、乙方按约每4平方公里范围设置一个片区水电工运维工作小组，片区水电工按巡查细则要求，及时对工作范围内设备设施进行巡查和小型缺陷（故障）处理，并将巡查和小型缺陷（故障）处理情况写入巡查日志。\n" +
                    "3、设备设施发生故障时，要求水电工随叫随到进行处理。\n" +
                    "4、乙方填报“水、电设备设施缺陷报表”，对一般性缺陷（不会迅速转变为故障的缺陷），应按月上报报表，由甲方签收。严重缺陷（可能随时变为故障的缺陷），乙方应及时报告，甲方应当立即做出处理批示。\n" +
                    "5、对发现小型缺陷（故障）且不需要发生设备材料费用的，乙方工作人员可以用口头（电话）形式告知甲方后，由乙方自行组织处理，并做好记录。\n" +
                    "6、对发现小型缺陷（故障）且需要发生设备材料费用的，乙方工作人员用书面形式报告甲方，由甲方作出处理批示意见，安排采购所需设备材料后，乙方组织对缺陷（故障）进行处理。\n" +
                    "7、对发现的大型缺陷（故障），乙方工作人员须书面形式报告给甲方，由甲方自行组织或委托乙方进行处理。\n" +
                    "8、每季度由乙方组织公司相关技术人员及现场日常巡查人员进行综合性巡视检查一次，重要节日、重大活动前乙方组织特殊性巡查。\n" +
                    "第四条  工作地点、期限\n" +
                    "1、工作地点：\n" +
                    "2、期限：         年  月  日至        年  月  日。\n" +
                    "第五条  甲乙双方的权利和义务\n" +
                    "一、甲方的权利和义务\n" +
                    "1、甲方有监督乙方严格履行本合同的权利。\n" +
                    "2、如乙方不履行合同主要条款义务，甲方有权单方面解除本合同，但应提前一个月用书面的形式通知对方。\n" +
                    "3、向乙方提供包括但不限于高低压配电系统一次结线图、给排水系统接线图、地理接线图及相关水、电设备产品说明书等技术资料。\n" +
                    "4、向乙方提供必要的协助和支持，确保乙方能顺利开展工作。\n" +
                    "5、按合同约定足额及时向乙方支付委托工作费用，以确保乙方正常开展工作。\n" +
                    "6、对乙方上报的缺陷报表，甲方应及时签字、盖章后交乙方保存。\n" +
                    "二、乙方的权利和义务\n" +
                    "1、乙方有督促甲方履行本合同义务的权利。\n" +
                    "2、如甲方不履行合同主要条款义务，乙方有权单方面解除本合同，但应提前一个月用书面的形式通知对方。\n" +
                    "3、乙方应按合同“第三条 委托工作要求”认真开展水、电设备设施相关工作。\n" +
                    "第六条  安全管理\n" +
                    "1、乙方工作人员应严格遵守《电业安全工作规程》和甲方相关安全管理制度。\n" +
                    "    2、乙方应牢固树立“安全第一、预防为主”的思想，做到：工作人员持证上岗，“不违章指挥、不违章操作、不伤害自己、不被别人伤害”。\n" +
                    "    3、工作人员工作前应了解工作地点的设备设施状况，做好相关安全措施，熟悉掌握设备设施的性能和使用方法。\n" +
                    "    4、工作人员进入现场，必须按要求正确着装。严禁赤脚或穿拖鞋上班，衣着不整齐不得进入作业现场。\n" +
                    "5、高空作业必须有切实可行的安全保证措施。作业时应系好安全带；不得穿硬底或带钉的鞋，不得往下投掷物料。\n" +
                    "6、甲方应督促乙方落实相关安全管理制度，对小区存在的危险因素应提前告知乙方。\n" +
                    "7、如乙方工作人员在岗位上发生触电伤害、高空甩跌、工作在途交通事故等由乙方负责。由于甲方责任导致乙方工作人员受到伤害的由甲方负责。\n" +
                    "第七条 文明管理\n" +
                    "1、乙方工作人员应遵守甲方文明管理规章制度，服从甲方统一管理。\n" +
                    "2、工器具和备品备件应摆放整齐、规范，实行定置管理。\n" +
                    "3、保持现场整洁、通畅。\n" +
                    "4、工作现场不得大声喧哗，严禁打架、斗殴，严禁酒后上岗等。\n" +
                    "5、乙方应加强对入场员工的环保教育，树立环境保护观念，自觉按环保要求开展工作。\n" +
                    "6、小区内严禁抽烟、嚼槟榔，乱扔杂物。\n" +
                    "7、处理缺陷（故障）应做到工完料尽，及时清理好现场的废弃物，不能让建筑垃圾、废料、废油等影响小区的环境。\n" +
                    "第八条  工作费用及付款方式\n" +
                    "1、工作费用：\n" +
                    "年工作费用总金额（含税）为人民币（大写）        元整（￥      元）。2、付款方式：\n" +
                    "工作费分两次支付，每次支付金额均为合同总金额的50%。第一次支付于合同签订后，30日内支付完毕；第二次于半年内支付完毕。\n" +
                    "乙方收款账户信息如下：\n" +
                    "开户银行：湖南娄底农村商业银行股份有限公司长青街支行\n" +
                    "银行帐号：82013300002019573\n" +
                    "3、乙方为甲方提供的预防性试验、大型缺陷（故障）抢修等延伸服务内容，其费用不包含在本合同工作费中，如发生时双方另行协商。\n" +
                    "4、甲方支付的工作费用，乙方应当提供合法有效的票据。\n" +
                    "第九条  违约责任\n" +
                    "1、由于乙方工作人员重大过错，造成甲方经济损失的，甲方可要求乙方根据责任大小进行赔偿，但其最高赔偿额度不超过本合同年工作费的50%。\n" +
                    "甲方要求乙方违章（违法）冒险作业的，乙方有权拒绝。甲方强令乙方违章（违法）冒险作业造成损失的，由甲方承担全部责任。\n" +
                    "2、甲方未按约定的时间向乙方付款的，每延迟一日，甲方应向乙方支付合同工作费用总额的1%作为违约金，延迟付款超过30日的，乙方有权单方面解除本合同。\n" +
                    "3、因不可抗力导致甲方损失的，乙方不承担赔偿责任。   \n" +
                    "第十条  项目联系人\n" +
                    "双方确定，在本合同有效期内\n" +
                    "甲方指定         （电话：             ）为甲方项目联系人，\n" +
                    "乙方指定         （电话：             ）为乙方项目联系人。\n" +
                    "第十一条  争议解决\n" +
                    "双方因履行本合同而发生的争议，双方协商解决。协商不成的，可向项目所在地人民法院提起诉讼。   \n" +
                    "第十二条  其他条款\n" +
                    "1、\t本合同自甲乙双方签字盖章后生效；\n" +
                    "2、\t未尽事宜，由双方另行协商解决，并签订补充合同。\n" +
                    "3、\t本合同一式肆份，甲乙双方各执贰份。\n" +
                    "（本页无正文）\n" +
                    "甲方（签章）：                       乙方（签章）：                  \n" +
                    "委托代理人签名：                     委托代理人签名：               \n" +
                    "签订日期：     年    月    日         签订日期：     年    月    日\n" +
                    " \n";
            //document.add(new Paragraph(str));
            //document.add(new Paragraph(new Date().toString()));
         /*   document.add(new Paragraph("Hello World 文字进不来==22"));
            BaseFont bfChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H",BaseFont.NOT_EMBEDDED);
            Font FontChinese12 = new Font(bfChinese, 10, Font.NORMAL);
            PdfPCell  cell = new PdfPCell(new Phrase("今天天气好晴朗",FontChinese12));
            document.add(new Paragraph(cell);
            document.close();*/
          /*  BaseFont bfChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H",BaseFont.NOT_EMBEDDED);
            Font FontChinese12 = new Font(bfChinese, 10, Font.NORMAL);
            Font FontChinese11 = new Font(bfChinese, 11, Font.ITALIC);
            PdfPTable table = new PdfPTable(3);
            PdfPCell cell; cell = new PdfPCell(new Phrase("今天天气好晴朗",FontChinese12));
            cell.setColspan(3);
            table.addCell(cell);
            cell = new PdfPCell(new Phrase("处处好风光",FontChinese11));
            cell.setRowspan(2); table.addCell(cell); table.addCell("row 1; cell 1");
            table.addCell("row 1; cell 2");
            table.addCell("row 2; cell 1");
            table.addCell("row 2; cell 2");
            document.add("2");
            document.add(table);*/
            BaseFont bfChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
            com.lowagie.text.Font FontChinese = new com.lowagie.text.Font(bfChinese, 12, com.lowagie.text.Font.NORMAL);
            Paragraph pragraph=new Paragraph(str, FontChinese);
            document.add(new Paragraph(pragraph));
            Image jpg = Image.getInstance("http://localhost:8084/upload/order/2020-05/1590037037_vn8np4si.png");

            jpg.setAlignment(Image.ALIGN_CENTER);

            document.add(jpg);

            document.close();
            file.close();

        } catch (Exception e) {

            e.printStackTrace();
        }
    }
}
